#ifndef OBSERVER_H
#define OBSERVER_H

#include <iostream>
#include <list>

namespace patterns {

class Observable;

class Observer {
public:
    virtual void update(Observable*, void*) = 0;
};

class Observable {
    std::list<Observer*> observers;
    //void* message;

public:
    virtual void addObserver(Observer* obs);
    //virtual std::wstring getMessage();

protected:
    virtual void notifyAll(void* msg);
};

}

#endif // OBSERVER_H
